package com.hello.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 数据统计汇总对象 data_statistics_summary
 * 
 * @author hello
 * @date 2025-09-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class DataStatisticsSummary extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 汇总ID */
    private Long summaryId;

    /** 统计日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "统计日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date statDate;

    /** 统计类型(device=设备/environment=环境/detection=检测/alarm=告警) */
    @Excel(name = "统计类型(device=设备/environment=环境/detection=检测/alarm=告警)")
    private String statType;

    /** 设备总数 */
    @Excel(name = "设备总数")
    private Long totalDevices;

    /** 在线设备数 */
    @Excel(name = "在线设备数")
    private Long onlineDevices;

    /** 离线设备数 */
    @Excel(name = "离线设备数")
    private Long offlineDevices;

    /** 故障设备数 */
    @Excel(name = "故障设备数")
    private Long faultDevices;

    /** 检测鱼类总数 */
    @Excel(name = "检测鱼类总数")
    private Long totalFishDetected;

    /** 平均检测精度(%) */
    @Excel(name = "平均检测精度(%)")
    private BigDecimal avgDetectionAccuracy;

    /** 告警总数 */
    @Excel(name = "告警总数")
    private Long totalAlarms;

    /** 严重告警数 */
    @Excel(name = "严重告警数")
    private Long criticalAlarms;

    /** 已处理告警数 */
    @Excel(name = "已处理告警数")
    private Long handledAlarms;

    /** 平均水温(°C) */
    @Excel(name = "平均水温(°C)")
    private BigDecimal avgWaterTemperature;

    /** 平均pH值 */
    @Excel(name = "平均pH值")
    private BigDecimal avgPhValue;

    /** 平均溶解氧(mg/L) */
    @Excel(name = "平均溶解氧(mg/L)")
    private BigDecimal avgDissolvedOxygen;

    /** 数据质量评分 */
    @Excel(name = "数据质量评分")
    private BigDecimal dataQualityScore;

    public void setSummaryId(Long summaryId) 
    {
        this.summaryId = summaryId;
    }

    public Long getSummaryId() 
    {
        return summaryId;
    }
    public void setStatDate(Date statDate) 
    {
        this.statDate = statDate;
    }

    public Date getStatDate() 
    {
        return statDate;
    }
    public void setStatType(String statType) 
    {
        this.statType = statType;
    }

    public String getStatType() 
    {
        return statType;
    }
    public void setTotalDevices(Long totalDevices) 
    {
        this.totalDevices = totalDevices;
    }

    public Long getTotalDevices() 
    {
        return totalDevices;
    }
    public void setOnlineDevices(Long onlineDevices) 
    {
        this.onlineDevices = onlineDevices;
    }

    public Long getOnlineDevices() 
    {
        return onlineDevices;
    }
    public void setOfflineDevices(Long offlineDevices) 
    {
        this.offlineDevices = offlineDevices;
    }

    public Long getOfflineDevices() 
    {
        return offlineDevices;
    }
    public void setFaultDevices(Long faultDevices) 
    {
        this.faultDevices = faultDevices;
    }

    public Long getFaultDevices() 
    {
        return faultDevices;
    }
    public void setTotalFishDetected(Long totalFishDetected) 
    {
        this.totalFishDetected = totalFishDetected;
    }

    public Long getTotalFishDetected() 
    {
        return totalFishDetected;
    }
    public void setAvgDetectionAccuracy(BigDecimal avgDetectionAccuracy) 
    {
        this.avgDetectionAccuracy = avgDetectionAccuracy;
    }

    public BigDecimal getAvgDetectionAccuracy() 
    {
        return avgDetectionAccuracy;
    }
    public void setTotalAlarms(Long totalAlarms) 
    {
        this.totalAlarms = totalAlarms;
    }

    public Long getTotalAlarms() 
    {
        return totalAlarms;
    }
    public void setCriticalAlarms(Long criticalAlarms) 
    {
        this.criticalAlarms = criticalAlarms;
    }

    public Long getCriticalAlarms() 
    {
        return criticalAlarms;
    }
    public void setHandledAlarms(Long handledAlarms) 
    {
        this.handledAlarms = handledAlarms;
    }

    public Long getHandledAlarms() 
    {
        return handledAlarms;
    }
    public void setAvgWaterTemperature(BigDecimal avgWaterTemperature) 
    {
        this.avgWaterTemperature = avgWaterTemperature;
    }

    public BigDecimal getAvgWaterTemperature() 
    {
        return avgWaterTemperature;
    }
    public void setAvgPhValue(BigDecimal avgPhValue) 
    {
        this.avgPhValue = avgPhValue;
    }

    public BigDecimal getAvgPhValue() 
    {
        return avgPhValue;
    }
    public void setAvgDissolvedOxygen(BigDecimal avgDissolvedOxygen) 
    {
        this.avgDissolvedOxygen = avgDissolvedOxygen;
    }

    public BigDecimal getAvgDissolvedOxygen() 
    {
        return avgDissolvedOxygen;
    }
    public void setDataQualityScore(BigDecimal dataQualityScore) 
    {
        this.dataQualityScore = dataQualityScore;
    }

    public BigDecimal getDataQualityScore() 
    {
        return dataQualityScore;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("summaryId", getSummaryId())
            .append("statDate", getStatDate())
            .append("statType", getStatType())
            .append("totalDevices", getTotalDevices())
            .append("onlineDevices", getOnlineDevices())
            .append("offlineDevices", getOfflineDevices())
            .append("faultDevices", getFaultDevices())
            .append("totalFishDetected", getTotalFishDetected())
            .append("avgDetectionAccuracy", getAvgDetectionAccuracy())
            .append("totalAlarms", getTotalAlarms())
            .append("criticalAlarms", getCriticalAlarms())
            .append("handledAlarms", getHandledAlarms())
            .append("avgWaterTemperature", getAvgWaterTemperature())
            .append("avgPhValue", getAvgPhValue())
            .append("avgDissolvedOxygen", getAvgDissolvedOxygen())
            .append("dataQualityScore", getDataQualityScore())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
